package com.naiterui.ehp.bs.cms.modules.oms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.cms.common.vo.PageParamsVO;
import com.naiterui.ehp.bs.cms.common.vo.PageVO;
import com.naiterui.ehp.bs.cms.modules.oms.entity.ReturnOrder;
import com.naiterui.ehp.bs.cms.modules.oms.vo.ExchangeOrderDetailVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.ExchangeOrderVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.LogisticsCompanyVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.ReturnOrderDetailVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.ReturnOrderParamVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.ReturnOrderVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.SupplementaryOrderDetailVO;
import com.naiterui.ehp.bs.cms.modules.oms.vo.SupplementaryOrderVO;
import java.util.List;

public interface IReturnOrderService extends IService<ReturnOrder> {

  /**
   * <pre>
   *     查询退换货订单列表
   * </pre>
   *
   * @param pageParamsVO
   * @param paramVO
   * @return
   */
  PageVO<ReturnOrderDetailVO> queryPage(PageParamsVO pageParamsVO, ReturnOrderParamVO paramVO);

  /**
   * <pre>获取退货订单详情</pre>
   *
   * @param orderId
   * @return
   */
  ReturnOrderDetailVO getReturnOrderDetail(Long orderId);

  /**
   * <pre>获取换货订单详情</pre>
   *
   * @param orderId
   * @return
   */
  ExchangeOrderDetailVO getExchangeOrderDetail(Long orderId);

  /**
   * <pre>获取补寄订单详情</pre>
   *
   * @param orderId
   * @return
   */
  SupplementaryOrderDetailVO getSupplementaryOrderDetail(Long orderId);

  /**
   * <pre>保存退货订单</pre>
   *
   * @param returnOrderVO
   * @throws BusinessException
   */
  void saveReturnOrder(ReturnOrderVO returnOrderVO) throws BusinessException;

  /**
   * <pre>保存换货订单</pre>
   *
   * @param orderVO
   */
  void saveExchangeOrder(ExchangeOrderVO orderVO) throws BusinessException;

  /**
   * <pre>保存补寄订单</pre>
   *
   * @param orderVO
   */
  void saveSupplementaryOrder(SupplementaryOrderVO orderVO) throws BusinessException;

  /**
   * <pre>批量审核</pre>
   *
   * @param ids
   * @throws BusinessException
   */
  void audit(List<Long> ids) throws BusinessException;

  /**
   * <pre>批量反审</pre>
   *
   * @param ids
   * @throws BusinessException
   */
  void reset(List<Long> ids) throws BusinessException;

  /**
   * <pre>批量提交</pre>
   *
   * @param ids
   * @throws BusinessException
   */
  void submit(List<Long> ids) throws BusinessException;

  /**
   * <pre>批量作废</pre>
   *
   * @param ids
   * @throws BusinessException
   */
  void invalid(List<Long> ids) throws BusinessException;

  /**
   * <pre>批量确认收货</pre>
   *
   * @param ids
   * @throws BusinessException
   */
  void confirm(List<Long> ids) throws BusinessException;

  List<LogisticsCompanyVO> logisticsCompanyList();

}
